package com.rnkrsoft.suyan.config.server.ajax.executor;


import com.rnkrsoft.suyan.config.server.ajax.authority.AuthorityContext;
import com.rnkrsoft.suyan.config.server.ajax.config.AjaxConfig;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * AJax接口执行器
 */
public interface AjaxExecutor {
    /**
     * 获取执行器类型
     * @return 执行器类型
     */
    ExecutorType getType();
    /**
     * 执行请求输入的JSON格式的请求报文，通常用于测试和用于非Servlet容器
     * @param request JSON格式的请求信息
     * @param authorityContext 权限上下文
     * @return JSON格式的应答信息
     */
    String execute(String request, AuthorityContext authorityContext);

    /**
     * 执行请求符合规范的请求信息，用于Servlet容器的集成
     * @param request HTTP请求对象
     * @param response HTTP应答对象
     */
    void execute(HttpServletRequest request, HttpServletResponse response);
}
